package com.dubbo;

import com.alibaba.dubbo.config.annotation.Reference;
import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import org.springframework.stereotype.Component;

@Component
public class HelloConsumer {

    //修改此直连式注解 @Reference(url = "dubbo://127.0.0.1:20880")

    /**
     * 在provider里面的@Service暴露了接口，所以要用@Reference使用接口，
     * 由于使用了注册中心所以，不需要用url指定去哪里拿接口
     * 也不需要指定拿什么接口，dubbo会帮我们找到并注入（类似于@Autowaird）
     */
//    @Reference(version = "2.0.0")
    @Reference(version = "1.0.0", loadbalance = "roundrobin")
    private IHelloService iHelloService;


    // 以下的调用会出错.fallbackMethod = "saySorry"表示出错了回调saySorry这个方法
    @HystrixCommand(fallbackMethod = "saySorry")
    public void say(String str) {
        System.out.println(iHelloService.sayHello(str));
    }

    // 注意此回调方法一定要带参数，带与上面一样的参数。不然报错！！！【FallbackDefinitionException】
    public void saySorry(String str) {
        System.out.println("sorry, the service is not available");
    }
}
